// ilist.cpp -- use initializer_list (C++11 feature)
#include <iostream>
#include <initializer_list>

double sum(std::initializer_list<double> il);

double average(const std::initializer_list<double> &ril);

int main() {
    using std::cout;

    cout << "List 1: sum = " << sum({2, 3, 4})
         << ", ave = " << average({2, 3, 4}) << '\n';
    std::initializer_list<double> dl = {1.1, 2.2, 3.3, 4.4, 5.5};
    cout << "List 2: sum = " << sum(dl)
         << ", ave = " << average(dl) << '\n';
    dl = {16.0, 25.0, 36.0, 40.0, 64.0};
    cout << "List 3: sum = " << sum(dl)
         << ", ave = " << average(dl) << '\n';
    return 0;
}

double sum(std::initializer_list<double> il) {
    double tot =  0;
    for (const auto &item: il)
        tot += item;
    return tot;
}

double average(const std::initializer_list<double> &ril) {
    double tot = 0;
    int n = ril.size();
    double ave = 0.0;
    if (n > 0) {
        for (const auto &item: ril)
            tot += item;
        ave = tot / n;
    }
    return ave;
}
